package models.common.entity;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Transient;

import play.db.jpa.Model;

import common.constants.ConfConst;
import common.constants.Constants;
import common.enums.Client;
import common.enums.IsCompany;
import common.enums.UserStatus;
import common.utils.Security;

/**
 * 用户表(注册、登录信息)
 * 个人企业表(注册、登录信息) 2017年4月14日11:58:54 zhiliang.lan
 *  
 * @description 
 *
 * @author ChenZhipeng
 * @createDate 2015年12月15日
 */

@Entity
public class t_user extends Model {
	
	public t_user(){
		
	}
	
	public t_user(Date time,String email, String name, String mobile, String password ,String myUsedCode) {
		super();
		this.time = time;
		this.email = email;
		this.name = name;
		this.mobile = mobile;
		this.password = password;
		this.my_used_code = myUsedCode;
	}
	
	/*public t_user(Date time, String mobile, String email, String company_full_name, 
			String company_short_name, String vip_code, String password){
		super();
		this.time = time;
		this.mobile = mobile;
		this.email = email;
		this.company_full_name = company_full_name;
		this.company_short_name = company_short_name;
		this.vip_code = vip_code;
		this.password = password;
		
	}*/
	

	/** 创建时间 */
	public Date time;

	/** 用户名 */
	public String name;

	/** 手机号码 */
	public String mobile;
	
	/**邮箱*/
	public String email;
	
	/** 企业和个人登录合并为一张表 ,企业全称 **/
	public String company_full_name;
	
	/** 企业和个人登录合并为一张表 ,企业简称 **/
	public String company_short_name;
	
	/**会员号*/
	public String vip_code;

	/** 登录密码 */
	public String password;

	/** 连续登录失败次数 */
	public int password_continue_fails;

	/** 密码连续错误被锁定 */
	public boolean is_password_locked;

	/** 密码连续错误被锁定时间 */
	public Date password_locked_time;

	/** 是否允许登录(锁定) */
	public boolean is_allow_login;

	/** 后台管理员执行锁定的时间 */
	public Date lock_time;

	/** 登录次数 */
	public int login_count;

	/** 上次登录时间 */
	public Date last_login_time;

	/** 上次登录ip */
	public String last_login_ip;

	/** 上次登录入口(枚举)：1 pc 2 app 3 wechat */
	private int last_login_client;
	/** 当前登录sessionId */
	public String  sessionId;
	/**是否企业用户 0---个人用户(默认);1--企业用户*/
	public int is_company;
	/**状态 0 正常 1 申请注销 2已注销*/
	public int status ;
	@Transient
	public String statusName;

	public String getStatusName() {
		
		return UserStatus.getEnum(status).value;
	}
	/**申请注销时间*/
	public Date apply_logout_time;
	/**注销时间*/
	public Date logout_time;
	
	/**APP手势登入密码*/
	public String sign_password;
	
	/**授信申请记录签署方式 0 自动签署1 面签*/
	public int is_pledge_management;
	
	
	/**是否授权签署合同 0--否；1--是*/
	public int is_accredit;
	
	public IsCompany getIsCompany(){
		IsCompany isCompany = IsCompany.getEnum(this.is_company);
		return isCompany;
	}
	
	public void setIsCompany(IsCompany isCompany){
		this.is_company = isCompany.code;
	}
	
	/**我的注册生成邀请码*/
	public String my_generate_code;
	
	/**我的注册填写邀请码*/
	public String my_used_code;
	
	/**
	 *安心签用户信息修改申请表路径
	 */
	public String anxinsign_url;
	
	public Client getLast_login_client() {
		Client client = Client.getEnum(last_login_client);
		return client;
	}

	public void setLast_login_client(Client last_login_client) {
		this.last_login_client = last_login_client.code;
	}
	
	/***自动投标标识 0开 1关*/
	public boolean bid_switch;
	
	/**加密ID*/
	@Transient
	public String sign;

	public String getSign() {
		
		return Security.addSign(this.id, Constants.BID_ID_SIGN, ConfConst.ENCRYPTION_KEY_DES);
	}
	
	/**app加密ID*/
	@Transient
	public String appSign;
	
	public String getAppSign() {
		
		return Security.addSign(this.id, Constants.BID_ID_SIGN, ConfConst.ENCRYPTION_APP_KEY_DES);
	}
	
	
	
}
